Computer graphics systems capable of providing dynamic displays (motion pictures) are well known in the prior art. To accomplish such displays effectively, with smoothly moving objects, it is necessary to frequently refresh the display with a new image. For example, every one-twentieth to one-sixtieth of a second a fresh display must be shown to avoid flicker and depict smooth movement. Consequently, memory must be effectively allocated and managed for the storage and delivery of picture data. Traditionally, such operations have involved compiling a display file as treated in the book, PRINCIPLES OF INTERACTIVE COMPUTER GRAPHICS, published 1979 by McGraw-Hill, Inc., by William M. Newman and Robert F. Sproull; specifically see Chapter 8.
In prior computer graphics systems, image data has been assembled for display using a so-called "double-buffered display frame buffer". Essentially, while a picture is being provided from one side of the frame buffer (as to drive a cathode ray tube display) the other side of the frame buffer is cleared of all previous data and rewritten with fresh data for the following picture. The roles of the frame buffer sides are reversed cyclically to provide image signals to the display apparatus in a rapid sequence. Such a technique has been effective in the past, particularly when the complete image (complete display of a screen) is treated as a single viewing window. However, in view of picture system developments, the technique has certain problems and limitations.
Picture systems have been developed that are capable of providing signals in rapid sequence that are representative of several different views concurrently. Accordingly, image data is available for several different dynamic images as on a split screen or windowed display. However, a problem arises in managing the data for refreshing such a multiple-window dynamic display. In that regard, consider the use of a traditional double-buffer frame buffer. Alternatively, the sides of the frame buffer receive data composed for display and deliver the data in ordered sequence. After supplying data, each side must be cleared to receive new data. Generally, the data for each elemental area, e.g. pixel, involves several binary bits. While an entire side of the buffer can be cleared in bulk very rapidly, selective clearing operations require considerable time. Consequently, selective clearing and writing operations, as for a multiple-window display, cannot be accommodated in a timely manner using traditional techniques.
Recapitulating to some extent, in dynamic frame buffers that only display the complete screen, it is relatively easy to swap and clear a buffer side quickly. However, for a windowed frame buffer system, where only a part of the screen is to be swapped and cleared, prior methods and apparatus are problematic.
In view of the above considerations, a need exists for an improved system for managing data preparatory to driving a multiple-window dynamic display. Specifically, a need exists for a system capable of performing the following operations: (1) the operation of selectively writing only to the window of interest in a display and not writing in other windows, even where one window partially overlays another; (2) the operation of selectively and rapidly clearing a window of interest without clearing the complete screen; (3) the operation of swapping the frame buffer corresponding only to a window of current interest; and (4) the selection of a given area within a given window whether data to be displayed on the screen comes from, (a) a default background color for the window, (b) one or the other side of the frame buffer, or (c) both buffer sides together (to yield more bits per pixel for nondynamic pictures). The operation of displaying so-called "pop-up menus" on the screen without destroying the contents of the picture in the frame buffers is also desirable.
In general, the dynamic display system of the present invention is capable of accomplishing the above operations in an expedient and economical manner. An image frame buffer stores image data which is entered and discharged in accordance with data registered in a window frame buffer and a plurality of valid data buffers. The window frame buffer registers window codes which define windows with respect to the contents of the image frame buffer. The valid data buffers hold indications of individual area data of current interest. Generally, the window frame buffer defines windows with respect to the image frame buffer and the valid data buffers define individual areas, e.g. pixels, of current interest with respect to the contents of the image frame buffer.